home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / Obrn-A_1.6_lib.lha / oberon-a / source3.lha / source / 3rdParty / ReqTools.mod < prev    next >
Text File  |  1995-05-26  |  22KB  |  780 lines

  1. (*
  2. **  Filename: reqtools.mod
  3. **  Release: 2.0
  4. **
  5. **  Oberon-A interface for reqtools.library.
  6. **
  7. **  (C) Copyright 1991/1992 Nico François
  8. **  All Rights Reserved
  9. **
  10. **  Needs OC >=5.16 to compile
  11. *)
  12.  
  13. <* STANDARD- *>
  14.  
  15. MODULE [2] ReqTools;
  16.  
  17. IMPORT
  18.   SYS := SYSTEM, Kernel, E := Exec, D := Dos, I := Intuition,
  19.   GFX := Graphics, UT := Utility, S := Sets;
  20.  
  21. TYPE
  22.   ReqToolsBasePtr* = POINTER TO ReqToolsBase;
  23.   ReqToolsBase* = RECORD (E.LibraryBase)
  24.     libNode-:       E.Library;
  25.     flags-:         S.SET8;
  26.     pad0, pad1, pad2: SHORTINT;
  27.     segList-:       D.BPTR;
  28.     (* The following library bases may be read and used by your program *)
  29.     intuitionBase-: I.IntuitionBasePtr;
  30.     gfxBase-:       GFX.GfxBasePtr;
  31.     dosBase-:       D.DosLibraryPtr;
  32.     (*
  33.        Next two library bases are only (and always) valid on Kickstart 2.0!
  34.        1.3 version of reqtools also initializes these when run on 2.0.
  35.     *)
  36.     gadToolsBase-:  E.LibraryPtr;
  37.     utilityBase-:   E.LibraryPtr;
  38.   END;
  39.  
  40. CONST
  41.   (* types of requesters, for AllocRequestA() *)
  42.   TypeFileReq*       = 0;
  43.   TypeReqInfo*       = 1;
  44.   TypeFontReq*       = 2;
  45.   TypeScreenModeReq* = 3;
  46.  
  47. TYPE
  48.   ReqToolsReqPtr * = POINTER TO ReqToolsReq;
  49.   ReqToolsReq * = RECORD END; (* make them compatible *)
  50.  
  51.  
  52. (***********************
  53. *                      *
  54. *    File requester    *
  55. *                      *
  56. ***********************)
  57.  
  58. (* structure _MUST_ be allocated with AllocRequest() *)
  59.  
  60. TYPE
  61.   FileRequesterPtr* = POINTER TO FileRequester;
  62.   FileRequester* = RECORD (ReqToolsReq)
  63.     reqPos*:       LONGINT;
  64.     leftOffset*:   INTEGER;
  65.     topOffset*:    INTEGER;
  66.     flags*:        S.SET32;
  67.     (* OBSOLETE IN V38! DON'T USE! *) hook*: UT.HookPtr;
  68.     dir-:          E.STRPTR;     (* READ ONLY! Change with ChangeReqAttrA()! *)
  69.     matchPat-:     E.STRPTR;     (* READ ONLY! Change with ChangeReqAttrA()! *)
  70.     defaultFont*:  GFX.TextFontPtr;
  71.     waitPointer*:  E.APTR;
  72.     (* V38 *)
  73.     lockWindow*:   LONGINT;
  74.     shareIDCMP*:   LONGINT;
  75.     intuiMsgFunc*: UT.HookPtr;
  76.     reserved1*:    INTEGER;
  77.     reserved2*:    INTEGER;
  78.     reserved3*:    INTEGER;
  79.     reqHeight-:    INTEGER;      (* READ ONLY!  Use RTFI_Height tag! *)
  80.     (* Private data follows! HANDS OFF :-) *)
  81.   END;
  82.  
  83. (* returned by FileRequestA() if multiselect is enabled,
  84.    free list with FreeFileList() *)
  85.  
  86.   FileListPtr* = POINTER TO FileList;
  87.   FileList* = RECORD
  88.     next*:   FileListPtr;
  89.     strLen*: LONGINT;  (* -1 for directories *)
  90.     name*:   E.STRPTR;
  91.   END;
  92.  
  93. (* structure passed to RTFI_FilterFunc callback hook by
  94.    volume requester (see RTFI_VolumeRequest tag) *)
  95.  
  96.   VolumeEntryPtr* = POINTER TO VolumeEntry;
  97.   VolumeEntry* = RECORD
  98.     type*: LONGINT;    (* DLT_DEVICE or DLT_DIRECTORY *)
  99.     name*: E.STRPTR;
  100.   END;
  101.  
  102. (***********************
  103. *                      *
  104. *    Font requester    *
  105. *                      *
  106. ***********************)
  107.  
  108. (* structure _MUST_ be allocated with AllocRequest() *)
  109.  
  110.   FontRequesterPtr* = POINTER TO FontRequester;
  111.   FontRequester* = RECORD (ReqToolsReq)
  112.     reqPos*:       LONGINT;
  113.     leftOffset*:   INTEGER;
  114.     topOffset*:    INTEGER;
  115.     flags*:        S.SET32;
  116.     (* OBSOLETE IN V38! DON'T USE! *) hook*: UT.HookPtr;
  117.     attr-:         GFX.TextAttr;    (* READ ONLY! *)
  118.     defaultFont*:  GFX.TextFontPtr;
  119.     waitPointer*: E.APTR;
  120.     (* V38 *)
  121.     lockWindow*:   LONGINT;
  122.     shareIDCMP*:   LONGINT;
  123.     intuiMsgFunc*: UT.HookPtr;
  124.     reserved1*:    INTEGER;
  125.     reserved2*:    INTEGER;
  126.     reserved3*:    INTEGER;
  127.     reqHeight-:    INTEGER;         (* READ ONLY!  Use RTFI_Height tag! *)
  128.     (* Private data follows! HANDS OFF :-) *)
  129.   END;
  130.  
  131.  
  132. (*************************
  133. *                        *
  134. *  ScreenMode requester  *
  135. *                        *
  136. *************************)
  137.  
  138. (* structure _MUST_ be allocated with rtAllocRequest() *)
  139.  
  140.   ScreenModeRequesterPtr* = POINTER TO ScreenModeRequester;
  141.   ScreenModeRequester* = RECORD (ReqToolsReq)
  142.     reqPos*:        LONGINT;
  143.     leftOffset*:    INTEGER;
  144.     topOffset*:     INTEGER;
  145.     flags*:         S.SET32;
  146.     private1*:      LONGINT;
  147.     displayID-:     LONGINT;     (* READ ONLY! *)
  148.     displayWidth-:  INTEGER;     (* READ ONLY! *)
  149.     displayHeight-: INTEGER;     (* READ ONLY! *)
  150.     defaultFont*:   GFX.TextFontPtr;
  151.     waitPointer*:   E.APTR;
  152.     lockWindow*:    LONGINT;
  153.     shareIDCMP*:    LONGINT;
  154.     intuiMsgFunc*:  UT.HookPtr;
  155.     reserved1*:     INTEGER;
  156.     reserved2*:     INTEGER;
  157.     reserved3*:     INTEGER;
  158.     reqHeight-:     INTEGER;     (* READ ONLY!  Use RTFI_Height tag! *)
  159.     displayDepth*:  INTEGER;
  160.     overscanType*:  INTEGER;
  161.     autoScroll*:    LONGINT;
  162.     (* Private data follows! HANDS OFF :-) *)
  163.   END;
  164.  
  165. (***********************
  166. *                      *
  167. *    Requester Info    *
  168. *                      *
  169. ***********************)
  170.  
  171.   (* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
  172.    _MUST_ be allocated with AllocRequest() *)
  173.  
  174.   ReqInfoPtr* = POINTER TO ReqInfo;
  175.   ReqInfo* = RECORD (ReqToolsReq)
  176.     reqPos*:      LONGINT;
  177.     leftOffset*:  INTEGER;
  178.     topOffset*:   INTEGER;
  179.     width*:       LONGINT;         (* not for EZRequestA() *)
  180.     reqTitle*:    E.STRPTR;        (* currently only for EZRequestA() *)
  181.     flags*:       S.SET32;
  182.     defaultFont*: GFX.TextFontPtr; (* currently only for PaletteRequestA() *)
  183.     waitPointer*: E.APTR;
  184.     (* V38 *)
  185.     lockWindow:   LONGINT;
  186.     shareIDCMP:   LONGINT;
  187.     intuiMsgFunc: UT.HookPtr;
  188.     (* structure may be extended in future *)
  189.   END;
  190.  
  191. (***********************
  192. *                      *
  193. *     Handler Info     *
  194. *                      *
  195. ***********************)
  196.  
  197. (* for ReqHandlerA(), will be allocated for you when you use
  198.    the ReqHandler tag, never try to allocate this yourself! *)
  199.  
  200.   HandlerInfoPtr* = POINTER TO HandlerInfo;
  201.   HandlerInfo* = RECORD
  202.     private1:   LONGINT;
  203.     waitMask*:  S.SET32;
  204.     doNotWait*: E.LONGBOOL; (* ? *)
  205.     (* Private data follows, HANDS OFF :-) *)
  206.   END;
  207.  
  208. (* possible return codes from ReqHandlerA() *)
  209. CONST
  210.   CallHandler* = 080000000H;
  211.  
  212.  
  213. (*************************************
  214. *                                    *
  215. *                TAGS                *
  216. *                                    *
  217. *************************************)
  218.  
  219.   TagBase* = UT.user;
  220.  
  221. (*** tags understood by most requester functions ***)
  222.   (* optional pointer to window *)
  223.   Window*        = TagBase+1;
  224.  
  225.   (* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
  226.   IDCMPFlags*    = TagBase+2;
  227.  
  228.   (* position of requester window (see below) - default REQPOS_POINTER *)
  229.   ReqPos*        = TagBase+3;
  230.  
  231.   (* signal mask to wait for abort signal *)
  232.   LeftOffset*    = TagBase+4;
  233.  
  234.   (* topedge offset of requester relative to position specified by ReqPos *)
  235.   TopOffset*     = TagBase+5;
  236.  
  237.   (* name of public screen to put requester on (Kickstart 2.0 only!) *)
  238.   PubScrName*    = TagBase+6;
  239.  
  240.   (* address of screen to put requester on *)
  241.   Screen*        = TagBase+7;
  242.  
  243.   (* tagdata must hold the address of (!) an APTR variable *)
  244.   DoReqHandler*  = TagBase+8;
  245.  
  246.   (* font to use when screen font is rejected, _MUST_ be fixed-width font!
  247.      (TextFontPtr , not TextAttrPtr ! - default GfxBase->DefaultFont *)
  248.   DefaultFont*   = TagBase+9;
  249.  
  250.   (* boolean to set the standard wait pointer in window - default FALSE *)
  251.   WaitPointer*   = TagBase+10;
  252.  
  253.   (* (V38) char preceding keyboard shortcut characters (will be underlined) *)
  254.   Underscore*    = TagBase+11;
  255.  
  256.   (* (V38) share IDCMP port with window - default FALSE *)
  257.   ShareIDCMP*    = TagBase+12;
  258.  
  259.   (* (V38) lock window and set standard wait pointer - default FALSE *)
  260.   LockWindowTag* = TagBase+13;
  261.  
  262.   (* (V38) boolean to make requester's screen pop to front - default TRUE *)
  263.   ScreenToFront* = TagBase+14;
  264.  
  265.   (* (V38) Requester should use this font - default: screen font *)
  266.   TextAttr*      = TagBase+15;
  267.  
  268.   (* (V38) call this hook for every IDCMP message not for requester *)
  269.   IntuiMsgFunc*  = TagBase+16;
  270.  
  271.   (* (V38) Locale ReqTools should use for text *)
  272.   Locale*        = TagBase+17;
  273.  
  274. (*** tags specific to EZRequestA ***)
  275.   (* title of requester window - default "Request" or "Information" *)
  276.   ezReqTitle*    = TagBase+20;
  277.  
  278.   (* TagBase+21 reserved *)
  279.  
  280.   (* various flags (see below) *)
  281.   ezFlags*       = TagBase+22;
  282.  
  283.   (* default response (activated by pressing RETURN) - default TRUE *)
  284.   ezDefaultResponse* = TagBase+23;
  285.  
  286. (*** tags specific to GetLongA ***)
  287.   (* minimum allowed value - default MININT *)
  288.   glMin*         = TagBase+30;
  289.  
  290.   (* maximum allowed value - default MAXINT *)
  291.   glMax*         = TagBase+31;
  292.  
  293.   (* suggested width of requester window (in pixels) *)
  294.   glWidth*       = TagBase+32;
  295.  
  296.   (* boolean to show the default value - default TRUE *)
  297.   glShowDefault* = TagBase+33;
  298.  
  299.   (* (V38) string with possible responses - default " _Ok |_Cancel" *)
  300.   glGadFmt *     = TagBase+34;
  301.  
  302.   (* (V38) optional arguments for RTGL_GadFmt *)
  303.   glGadFmtArgs*  = TagBase+35;
  304.  
  305.   (* (V38) invisible typing - default FALSE *)
  306.   glInvisible*   = TagBase+36;
  307.  
  308.   (* (V38) window backfill - default TRUE *)
  309.   glBackFill*    = TagBase+37;
  310.  
  311.   (* (V38) optional text above gadget *)
  312.   glTextFmt*     = TagBase+38;
  313.  
  314.   (* (V38) optional arguments for RTGS_TextFmt *)
  315.   glTextFmtArgs* = TagBase+39;
  316.  
  317.   (* (V38) various flags (see below) *)
  318.   glFlags*       = ezFlags;
  319.  
  320. (*** tags specfic to GetStringA ***)
  321.   (* suggested width of requester window (in pixels) *)
  322.   gsWidth*       = glWidth;
  323.  
  324.   (* allow empty string to be accepted - default FALSE *)
  325.   gsAllowEmpty*  = TagBase+80;
  326.  
  327.   (* (V38) string with possible responses - default " _Ok |_Cancel" *)
  328.   gsGadFmt *     = glGadFmt;
  329.  
  330.   (* (V38) optional arguments for RTGS_GadFmt *)
  331.   gsGadFmtArgs*  = glGadFmtArgs;
  332.  
  333.   (* (V38) invisible typing - default FALSE *)
  334.   gsInvisible*   = glInvisible;
  335.  
  336.   (* (V38) window backfill - default TRUE *)
  337.   gsBackFill*    = glBackFill;
  338.  
  339.   (* (V38) optional text above gadget *)
  340.   gsTextFmt*     = glTextFmt;
  341.  
  342.   (* (V38) optional arguments for RTGS_TextFmt *)
  343.   gsTextFmtArgs* = glTextFmtArgs;
  344.  
  345.   (* (V38) various flags (see below) *)
  346.   gsFlags*       = ezFlags;
  347.  
  348. (*** tags specific to FileRequestA ***)
  349.   (* various flags (see below) *)
  350.   fiFlags*       = TagBase+40;
  351.  
  352.   (* suggested height of file requester *)
  353.   fiHeight*      = TagBase+41;
  354.  
  355.   (* replacement text for 'Ok' gadget (max 6 chars) *)
  356.   fiOkText*      = TagBase+42;
  357.  
  358.   (* (V38) bring up volume requester, tag data holds flags (see below) *)
  359.   fiVolumeRequest* = TagBase+43;
  360.  
  361.   (* (V38) call this hook for every file in the directory *)
  362.   fiFilterFunc*  = TagBase+44;
  363.  
  364.   (* (V38) allow empty file to be accepted - default FALSE *)
  365.   fiAllowEmpty*  = TagBase+45;
  366.  
  367. (*** tags specific to FontRequestA ***)
  368.   (* various flags (see below) *)
  369.   foflags*       = fiFlags;
  370.  
  371.   (* suggested height of font requester *)
  372.   foHeight*      = fiHeight;
  373.  
  374.   (* replacement text for 'Ok' gadget (max 6 chars) *)
  375.   foOkText*      = fiOkText;
  376.  
  377.   (* suggested height of font sample display - default 24 *)
  378.   foSampleHeight* = TagBase+60;
  379.  
  380.   (* minimum height of font displayed *)
  381.   foMinHeight*   = TagBase+61;
  382.  
  383.   (* maximum height of font displayed *)
  384.   foMaxHeight*   = TagBase+62;
  385.  
  386.   (* [TagBase+63 to TagBase+66 used below] *)
  387.  
  388.   (* (V38) call this hook for every font *)
  389.   foFilterFunc*  = fiFilterFunc;
  390.  
  391. (*** (V38) tags for rtScreenModeRequestA ***)
  392.   (* various flags (see below) *)
  393.   scFlags*       = fiFlags;
  394.  
  395.   (* suggested height of screenmode requester *)
  396.   scHeight*      = fiHeight;
  397.  
  398.   (* replacement text for 'Ok' gadget (max 6 chars) *)
  399.   scOkText*      = fiOkText;
  400.  
  401.   (* property flags (see also RTSC_PropertyMask) *)
  402.   scPropertyFlags* = TagBase+90;
  403.  
  404.   (* property mask - default all bits in RTSC_PropertyFlags considered *)
  405.   scPropertyMask* = TagBase+91;
  406.  
  407.   (* minimum display width allowed *)
  408.   scMinWidth*    = TagBase+92;
  409.  
  410.   (* maximum display width allowed *)
  411.   scMaxWidth*    = TagBase+93;
  412.  
  413.   (* minimum display height allowed *)
  414.   scMinHeight*   = TagBase+94;
  415.  
  416.   (* maximum display height allowed *)
  417.   scMaxHeight*   = TagBase+95;
  418.  
  419.   (* minimum display depth allowed *)
  420.   scMinDepth*    = TagBase+96;
  421.  
  422.   (* maximum display depth allowed *)
  423.   scMaxDepth*    = TagBase+97;
  424.  
  425.   (* call this hook for every display mode id *)
  426.   scFilterFunc*  = fiFilterFunc;
  427.  
  428. (*** tags for ChangeReqAttrA ***)
  429.   (* file requester - set directory *)
  430.   fiDir* = TagBase+50;
  431.  
  432.   (* file requester - set wildcard pattern *)
  433.   fiMatchPat*    = TagBase+51;
  434.  
  435.   (* file requester - add a file or directory to the buffer *)
  436.   fiAddEntry*    = TagBase+52;
  437.  
  438.   (* file requester - remove a file or directory from the buffer *)
  439.   fiRemoveEntry* = TagBase+53;
  440.  
  441.   (* font requester - set font name of selected font *)
  442.   foFontName*    = TagBase+63;
  443.  
  444.   (* font requester - set font size *)
  445.   foFontHeight*  = TagBase+64;
  446.  
  447.   (* font requester - set font style *)
  448.   foFontStyle*   = TagBase+65;
  449.  
  450.   (* font requester - set font flags *)
  451.   foFontFlags*   = TagBase+66;
  452.  
  453. (*** tags for ScreenModeRequestA ***)
  454.   (* (V38) screenmode requester - get display attributes from screen *)
  455.   scModeFromScreen* = TagBase+80;
  456.  
  457.   (* (V38) screenmode requester - set display mode id (32-bit extended) *)
  458.   scDisplayID*     = TagBase+81;
  459.  
  460.   (* (V38) screenmode requester - set display width *)
  461.   scDisplayWidth*  = TagBase+82;
  462.  
  463.   (* (V38) screenmode requester - set display height *)
  464.   scDisplayHeight* = TagBase+83;
  465.  
  466.   (* (V38) screenmode requester - set display depth *)
  467.   scDisplayDepth*  = TagBase+84;
  468.  
  469.   (* (V38) screenmode requester - set overscan type, 0 for regular size *)
  470.   scOverscanType*  = TagBase+85;
  471.  
  472.   (* (V38) screenmode requester - set autoscroll *)
  473.   scAutoScroll*    = TagBase+86;
  474.  
  475. (*** tags for PaletteRequestA ***)
  476.   (* initially selected color - default 1 *)
  477.   paColor*       = TagBase+70;
  478.  
  479. (*** tags for ReqHandlerA ***)
  480.   (* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
  481.      in case of EZRequest to the return value *)
  482.   rhEndRequest*  = TagBase+60;
  483.  
  484. (*** tags for AllocRequestA ***)
  485.   (* no tags defined yet *)
  486.  
  487.  
  488. (************
  489. * ReqPos    *
  490. ************)
  491.   ReqPosPointer*      = 0;
  492.   ReqPosCenterWin*    = 1;
  493.   ReqPosCenterScr*    = 2;
  494.   ReqPosTopLeftWin*   = 3;
  495.   ReqPosTopLeftScr*   = 4;
  496.  
  497. (******************
  498. * RTRH_EndRequest *
  499. ******************)
  500.   ReqCancel*          = 0;
  501.   ReqOK*              = 1;
  502.  
  503. (***************************************
  504. * flags for RTFI_Flags and RTFO_Flags  *
  505. * or filereq->Flags and fontreq->Flags *
  506. ***************************************)
  507.   fReqNoBuffer*       = 2;
  508.  
  509. (*****************************************
  510. * flags for RTFI_Flags or filereq->Flags *
  511. *****************************************)
  512.   fReqMultiSelect*    = 0;
  513.   fReqSave*           = 1;
  514.   fReqNoFiles*        = 3;
  515.   fReqPatGad*         = 4;
  516.   fReqSelectDirs*     = 12;
  517.  
  518. (*****************************************
  519. * flags for RTFO_Flags or fontreq->Flags *
  520. *****************************************)
  521.   fReqFixedWidth*     = 5;
  522.   fReqColorFonts*     = 6;
  523.   fReqChangePalette*  = 7;
  524.   fReqLeavePalette*   = 8;
  525.   fReqScale*          = 9;
  526.   fReqStyle*          = 10;
  527.  
  528. (*****************************************************
  529. * (V38) flags for RTSC_Flags or screenmodereq->Flags *
  530. *****************************************************)
  531.   scReqSizeGads*      = 13;
  532.   scReqDepthGad*      = 14;
  533.   scReqNonStdModes*   = 15;
  534.   scReqGuiModes*      = 16;
  535.   scReqAutoscrollGad* = 18;
  536.   scReqOverscanGad*   = 19;
  537.  
  538. (*****************************************
  539. * flags for RTEZ_Flags or reqinfo->Flags *
  540. *****************************************)
  541.   ezReqNoReturnKey*   = 0;
  542.   ezReqLamigaQual*    = 1;
  543.   ezReqCenterText*    = 2;
  544.  
  545. (***********************************************
  546. * (V38) flags for RTGL_Flags or reqinfo->Flags *
  547. ***********************************************)
  548.   glReqCenterText*    = ezReqCenterText;
  549.   glReqHighlightText* = 3;
  550.  
  551. (***********************************************
  552. * (V38) flags for RTGS_Flags or reqinfo->Flags *
  553. ***********************************************)
  554.   gsReqCenterText*    = ezReqCenterText;
  555.   gsReqHighlightText* = glReqHighlightText;
  556.  
  557. (*****************************************
  558. * (V38) flags for RTFI_VolumeRequest tag *
  559. *****************************************)
  560.   vReqNoAssigns*      = 0;
  561.   vReqNoDisks*        = 1;
  562.   vReqAllDisks*       = 2;
  563.  
  564. (*
  565.    Following things are obsolete in ReqTools V38.
  566.    Don't use them in new code!
  567. *)
  568.   fReqDoWildFunc*     = 11;
  569.   ReqHookWildFile*    = 0;
  570.   ReqHookWildFont*    = 1;
  571.  
  572.  
  573. CONST
  574.   name* = "reqtools.library";
  575.   libraryMinimum* = 38;
  576.  
  577. VAR
  578.   base*: ReqToolsBasePtr;
  579.  
  580. PROCEDURE AllocRequestA* [base,-30]
  581.   ( type[0]: LONGINT;
  582.     tagList[8]: ARRAY OF UT.TagItem )
  583.   : ReqToolsReqPtr;
  584. PROCEDURE AllocRequest* [base,-30]
  585.   ( type[0]: LONGINT;
  586.     tag1[8]..: UT.Tag )
  587.   : ReqToolsReqPtr;
  588. PROCEDURE FreeRequest* [base,-36]
  589.   ( req[9]: ReqToolsReqPtr );
  590. PROCEDURE FreeReqBuffer* [base,-42]
  591.   ( req[9]: ReqToolsReqPtr );
  592. PROCEDURE ChangeReqAttrA* [base,-48]
  593.   ( req[9]: ReqToolsReqPtr;
  594.     tagList[8]: ARRAY OF UT.TagItem );
  595. PROCEDURE ChangeReqAttr* [base,-48]
  596.   ( req[9]: ReqToolsReqPtr;
  597.     tag1[8]..: UT.Tag );
  598. PROCEDURE FileRequestA* [base,-54]
  599.   ( fileReq[9]: FileRequesterPtr;
  600.     VAR fileName[10]: ARRAY OF CHAR;
  601.     title[11]: ARRAY OF CHAR;
  602.     tagList[8]: ARRAY OF UT.TagItem )
  603.   : BOOLEAN;
  604. PROCEDURE FileRequest* [base,-54]
  605.   ( fileReq[9]: FileRequesterPtr;
  606.     VAR fileName[10]: ARRAY OF CHAR;
  607.     title[11]: ARRAY OF CHAR;
  608.     tag1[8]..: UT.Tag )
  609.   : BOOLEAN;
  610. PROCEDURE FreeFileList* [base,-60]
  611.   ( fileList[8]: FileListPtr );
  612. PROCEDURE EZRequestA* [base,-66]
  613.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  614.     reqInfo[11]: ReqInfoPtr;
  615.     argArray[12]: E.APTR;
  616.     tagList[8]: ARRAY OF UT.TagItem )
  617.   : LONGINT;
  618. PROCEDURE EZRequestTags* [base,-66]
  619.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  620.     reqInfo[11]: ReqInfoPtr;
  621.     argArray[12]: E.APTR;
  622.     tag1[8]..: UT.Tag )
  623.   : LONGINT;
  624. PROCEDURE EZRequest* [base,-66]
  625.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  626.     reqInfo[11]: ReqInfoPtr;
  627.     tagList[8]: ARRAY OF UT.TagItem;
  628.     argArray[12]..: E.APTR )
  629.   : LONGINT;
  630. (* Without result.... *)
  631. PROCEDURE VEZRequestA* [base,-66]
  632.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  633.     reqInfo[11]: ReqInfoPtr;
  634.     argArray[12]: E.APTR;
  635.     tagList[8]: ARRAY OF UT.TagItem );
  636. PROCEDURE VEZRequestTags* [base,-66]
  637.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  638.     reqInfo[11]: ReqInfoPtr;
  639.     argArray[12]: E.APTR;
  640.     tag1[8]..: UT.Tag );
  641. PROCEDURE VEZRequest* [base,-66]
  642.   ( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
  643.     reqInfo[11]: ReqInfoPtr;
  644.     tagList[8]: ARRAY OF UT.TagItem;
  645.     argArray[12]..: E.APTR );
  646. PROCEDURE GetStringA* [base,-72]
  647.   ( VAR buffer[9]: ARRAY OF CHAR;
  648.     maxChars[0]: LONGINT;
  649.     title[10]: ARRAY OF CHAR;
  650.     reqInfo[11]: ReqInfoPtr;
  651.     tagList[8]: ARRAY OF UT.TagItem )
  652.   : BOOLEAN;
  653. PROCEDURE GetString* [base,-72]
  654.   ( VAR buffer[9]: ARRAY OF CHAR;
  655.     maxChars[0]: LONGINT;
  656.     title[10]: ARRAY OF CHAR;
  657.     reqInfo[11]: ReqInfoPtr;
  658.     tag1[8]..: UT.Tag )
  659.   : BOOLEAN;
  660. PROCEDURE GetLongA* [base,-78]
  661.   ( VAR long[9]: LONGINT; title[10]: ARRAY OF CHAR;
  662.     reqInfo[11]: ReqInfoPtr;
  663.     tagList[8]: ARRAY OF UT.TagItem )
  664.   : BOOLEAN;
  665. PROCEDURE GetLong* [base,-78]
  666.   ( VAR long[9]: LONGINT; title[10]: ARRAY OF CHAR;
  667.     reqInfo[11]: ReqInfoPtr;
  668.     tag1[8]..: UT.Tag )
  669.   : BOOLEAN;
  670. PROCEDURE FontRequestA* [base,-96]
  671.   ( fontReq[9]: FontRequesterPtr;
  672.     title[11]: ARRAY OF CHAR;
  673.     tagList[8]: ARRAY OF UT.TagItem )
  674.   : BOOLEAN;
  675. PROCEDURE FontRequest* [base,-96]
  676.   ( fontReq[9]: FontRequesterPtr;
  677.     title[11]: ARRAY OF CHAR;
  678.     tag1[8]..: UT.Tag )
  679.   : BOOLEAN;
  680. PROCEDURE PaletteRequestA* [base,-102]
  681.   ( title[10]: ARRAY OF CHAR;
  682.     reqInfo[11]: ReqInfoPtr;
  683.     tagList[8]: ARRAY OF UT.TagItem )
  684.   : LONGINT;
  685. PROCEDURE PaletteRequest* [base,-102]
  686.   ( title[10]: ARRAY OF CHAR;
  687.     reqInfo[11]: ReqInfoPtr;
  688.     tag1[8]..: UT.Tag )
  689.   : LONGINT;
  690. PROCEDURE ReqHandlerA* [base,-108]
  691.   ( hinfo[9]: HandlerInfoPtr;
  692.     sigs[0]: S.SET32;
  693.     tagList[8]: ARRAY OF UT.TagItem )
  694.   : LONGINT;
  695. PROCEDURE ReqHandler* [base,-108]
  696.   ( hinfo[9]: HandlerInfoPtr;
  697.     sigs[0]: S.SET32;
  698.     tag1[8]..: UT.Tag)
  699.   : LONGINT;
  700. PROCEDURE SetWaitPointer* [base,-114]
  701.   ( window[8]: I.WindowPtr );
  702. PROCEDURE GetVScreenSize* [base,-120]
  703.   ( screen[8]: I.ScreenPtr;
  704.     VAR width[9],height[10]: LONGINT );
  705. PROCEDURE SetReqPosition* [base,-126]
  706.   ( reqPos[0]: LONGINT;
  707.     VAR nw[8]: I.NewWindow;
  708.     screen[9]: I.ScreenPtr;
  709.     window[10]: I.WindowPtr );
  710. PROCEDURE Spread* [base,-132]
  711.   ( VAR posArray[8]: ARRAY OF LONGINT;
  712.     sizeArray[9]: ARRAY OF LONGINT;
  713.     totalSize[0], min[1], max[2], num[3]: LONGINT );
  714. PROCEDURE ScreenToFrontSafely* [base,-138]
  715.   ( screen[8]: I.ScreenPtr );
  716.  
  717. (*--- functions in V38 or higher (distributed as Release 2.0) ---*)
  718. PROCEDURE ScreenModeRequestA* [base,-144]
  719.   ( screenmodeReq[9]: ScreenModeRequesterPtr;
  720.     title[11]: ARRAY OF CHAR;
  721.     tagList[8]: ARRAY OF UT.TagItem )
  722.   : BOOLEAN;
  723. PROCEDURE ScreenModeRequest* [base,-144]
  724.   ( screenmodeReq[9]: ScreenModeRequesterPtr;
  725.     title[11]: ARRAY OF CHAR;
  726.     tag1[8]..: UT.Tag )
  727.   : BOOLEAN;
  728. PROCEDURE CloseWindowSafely* [base,-150]
  729.   ( window[8]: I.WindowPtr );
  730. PROCEDURE LockWindow* [base,-156]
  731.   ( window[8]: I.WindowPtr )
  732.   : LONGINT;
  733. PROCEDURE UnlockWindow* [base,-162]
  734.   ( window[8]: I.WindowPtr;
  735.     winLock[9]: LONGINT );
  736.  
  737.  
  738. PROCEDURE [0] Assert* (cond: BOOLEAN; msg: ARRAY OF CHAR);
  739.   VAR str : E.LSTRPTR;
  740. BEGIN
  741.   IF ~cond THEN
  742.     str := SYS.ADR ("Assert");
  743.     VEZRequestTags
  744.       ( msg, "Abort", NIL, NIL,
  745.         ezReqTitle, str,
  746.         UT.done );
  747.     HALT (20)
  748.   END;
  749. END Assert;
  750.  
  751. (*-- Library Base variable --------------------------------------------*)
  752.  
  753. <*$LongVars-*>
  754.  
  755. (*-----------------------------------*)
  756. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  757.  
  758. BEGIN
  759.   IF base # NIL THEN E.CloseLibrary (base) END;
  760. END CloseLib;
  761.  
  762. (*-----------------------------------*)
  763. PROCEDURE [0] OpenLib * (mustOpen : BOOLEAN);
  764.  
  765. BEGIN
  766.   IF base = NIL THEN
  767.     base :=
  768.       SYS.VAL
  769.         ( ReqToolsBasePtr,
  770.           E.OpenLibrary (name, libraryMinimum));
  771.     IF base # NIL THEN Kernel.SetCleanup (CloseLib)
  772.     ELSIF mustOpen THEN HALT (100)
  773.     END
  774.   END
  775. END OpenLib;
  776.  
  777. BEGIN
  778.   base := NIL
  779. END ReqTools.
  780.